package com.threadDemo;
/**
 * 例子1：创建线程对象
 * 遍历100以内所有的偶数
 */

//1.创建一个继承于Thread类的子类
class MyThread extends Thread{
//    2.重写Thread类的run() （run缩写run()方法，i.sout缩写System.out.println(i);）
    @Override
    public void run() {
        for(int i=0;i<100;i++){
            if(i%2==0){
//                System.out.println(i);
//                可以通过currentThread().getName()获取当前线程名
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }

//    通过构造器的方式给线程命名
    public MyThread(String name){
        super(name);
    }
}

public class ThreadTest1 {
    public static void main(String[] args) {
       // 3.创建Thread类的子类对象
        MyThread myThread = new MyThread("T1");
       // 4.通过myThread对象调用start(),1、启动当前线 2、调用当前线程的run()
        myThread.start();

       // 问题一：如果执行的是run(),就没有多分出线程，只是调用方法。需要重新创建并调用start()
       // myThread.run();
       // 问题而：再启动同一线程,
       // 报错：Exception in thread "main" java.lang.IllegalThreadStateException
       //   if (this.threadStatus != 0) {
       //       throw new IllegalThreadStateException();
       // myThread.start();

       // 3.创建线程2
        MyThread myThread2 = new MyThread("T2");
       // 4.通过myThread对象调用start(),1、启动当前线 2、调用当前线程的run()
        myThread2.start();


       // 主函数的线程
       // 给主线程命名
        Thread.currentThread().setName("主线程");
        for(int i=0;i<100;i++){
            if(i%2!=0){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
}
